/**
 * Created by aifece on 15/1/15.
 */


/**
* 获取某年某月有多少天
*/
function getDaysInOneMonth(year, month){  
  month = parseInt(month, 10);  
  var d= new Date(year, month, 0);  
  return d.getDate();  
}



/**
 * 兼容的动画函数
 * animate(obj, { width:'100px' }, 2000, function(){ //... })
 * animate(obj, { width:'100px' }, 2000, 'ease', function(){ //... })
 * @author liw
 */
function animate(){
  var obj = arguments[0];
  if(!(obj instanceof jQuery)) {
    return;
  }
  var fn = Modernizr.csstransitions ? 'transition' : 'animate';
  var prop = arguments[1];
  if(!prop) return;
  for(var i in prop) {
    if(i.toLowerCase() == 'x' && fn == 'animate') {
      prop['left'] = prop[i];
      delete prop[i];
    } else if (i.toLowerCase() == 'y' && fn == 'animate') {
      prop['top'] = prop[i];
      delete prop[i];
    }
  }
  obj[fn].apply(obj, Array.prototype.slice.call(arguments, 1));
}

/**
 * 弹窗提示信息
 * param msg 提示文本
 * param status 提示状态 默认：false  1为 带确认按钮的提示
 * param timeOut 提示框存在时间 默认 1500
 * 实例：showMsg('成功', 'success') showMsg('警告') showMsg('错误', 'error')
 */
function showMsg(msg, status, timeOut)
{
  var html = '<div id="js_alertDiv"><div class="shade-black"></div><div class="float float3 js_alertDivChild">\
        <h2>提示</h2>\
        <p class="prompt">'+msg+'</p>\
      </div></div>';
  if (status == 1) {
    html = '<div id="js_alertDiv"><div class="shade-black"></div><div class="float float2 js_alertDivChild">\
          <h2>提示</h2>\
          <p class="prompt">'+msg+'</p>\
          <div class="btns"><a href="javascript:;" class="btn js_submitView">确定</a></div>\
        </div></div>';
  }

  if ($('body').find('#js_alertDiv').length == 0) {
    $('body').append(html);

    if (status == 1) {
      $('#js_alertDiv').on('click', '.js_submitView', function(){
        $('#js_alertDiv').fadeOut('400', function() {
          $('#js_alertDiv').remove();
        });
        $('#js_alertDiv').on('click', '.js_submitView', null);
      });
      return;
    }

    if (!timeOut) {
      timeOut = 1000;
    }

    setTimeout(function(){
      $('#js_alertDiv').fadeOut('400', function() {
        $('#js_alertDiv').remove();
      });
    }, timeOut);
  }
}

/**
 * 弹窗confirm
 * param msg 提示文本
 * param callback 点击确定后的回调函数
 * param callbackFail 点击取消后的回调函数
 * param hasBG 是否需要背景这招
 * 实例：showConfirm('您确定已满18岁', function(){ 'go' }, function(){ 'go' }) 
 */
function showConfirm(msg, callback, callbackFail, hasBG)
{
  var bg = '<div class="shade-black"></div>';
  // if (hasBG === false) {
  //   bg = '';
  // }
  var html = '<div id="js_confirmDiv">'+bg+'\
    <div class="float float1">\
      <h2>确认订单</h2>\
      <p class="prompt">'+msg+'</p>\
      <div class="btns"><a href="javascript:void(0);" class="btn1 js_cancelConfirm">取消</a><a href="javascript:void(0);" class="btn2 js_submitConfirm">确定</a></div>\
    </div></div>';

  if ($('body').find('#js_confirmDiv').length == 0) {
    $('body').append(html);

    $('#js_confirmDiv').on('click', '.js_submitConfirm', function(){
      if (callback) {
        callback();
      }
      $('#js_confirmDiv').fadeOut('400', function() {
        $('#js_confirmDiv').remove();
      });
      $('#js_confirmDiv').on('click', '.js_submitConfirm,.js_cancelConfirm,.js_closeConfirm', null);
    });
    $('#js_confirmDiv').on('click', '.js_cancelConfirm', function(){
      if (callbackFail) {
        callbackFail();
        btnClick('reset');
      }
      $('#js_confirmDiv').fadeOut('400', function() {
        $('#js_confirmDiv').remove();
      });
      $('#js_confirmDiv').on('click', '.js_submitConfirm,.js_cancelConfirm,.js_closeConfirm', null);
    });
    $('#js_confirmDiv').on('click', '.js_closeConfirm', function(){
      $('#js_confirmDiv').fadeOut('400', function() {
        $('#js_confirmDiv').remove();
      });
      $('#js_confirmDiv').on('click', '.js_submitConfirm,.js_cancelConfirm,.js_closeConfirm', null);
    });
  }
}

// 判断是否登录，没有登录弹出登陆框
function checkLogin(redirectUrl, callback)
{
  var url = siteUrl+'/user/check_login_status';
  $.post(url, {  }, function(json){
    if (json.info == 'ok') {
      if (callback) {
        callback();
      }
    } else {
      // tollyRfUrl(redirectUrl); // 第三方登录
      // $('.float-login-box').data('url', redirectUrl).data('login', '');
      // $('.float-login-box').show().prev().show();
      window.location.href = siteUrl+'/user/login?rfUrl='+redirectUrl;
    }
  }, 'json');
}

// 添加到购物车
function addGoodsToCart(skuId, goodsNum, callback, isPromotion, isGift)
{
  var url = siteUrl+'/cart/add_cart';
  var isP = 0;
  var isG = 0;
  if (isPromotion) {
    isP = 1;
  }
  if (isGift) {
    isG = 1;
  }
  $.post(url, { sku_id:skuId, goods_num:goodsNum, is_promotion:isP, is_gift:isG }, function(json){
    if (json.info == 'ok') {
      if (callback) {
        callback(json);
      }
    } else {
      showMsg(json.info);
    }
    btnClick('reset');
  }, 'json');
}

// 取滚动条高度
function getScrollTop()
{
    var scrollTop=0;
    if(document.documentElement&&document.documentElement.scrollTop)
    {
        scrollTop=document.documentElement.scrollTop;
    }
    else if(document.body)
    {
        scrollTop=document.body.scrollTop;
    }
    return scrollTop;
}

/**
 * 类Facebook图片居中
 * @param {jQueryobject} container 装载图片的外框，内部图片可相对其相对定位（relative）
 * @param number width 框的宽度
 * @param number height 框的高度
 * @author liw
 */
function imageCenters(containers, maxWidth, maxHeight, isLoading)
{
  if (!containers || !containers.length || !maxWidth || !maxHeight) {
    return false;
  }

  // 添加固定样式
  containers.css({
    overflow: 'hidden'
    //width: maxWidth+'px',
    //height: maxHeight+'px'
    //position: 'relative'
  });

  // 遍历
  $.each(containers, function(){
    var container = $(this);
    var imgObj = container.children('img').eq(0);
    var src    = imgObj.attr('src');
    if (!src) return true;
    imgObj.removeAttr("width").removeAttr("height");
    // loading
    if (isLoading) {
      imgObj.attr('src', '/images/loading.gif').css({
        'width': '16px',
        'height': '16px',
        'top': (maxHeight/2 - 8) + 'px',
        'left': (maxWidth/2 - 8) + 'px',
        'position': 'relative'
      });
    }
    // 加载图片
    loadImage(src, function(img){
      var width  = img.width;
      var height = img.height;

      if ( (width / height) >= (maxWidth/maxHeight) ) {
        var realW = (width / height) * maxHeight;
        var left = (realW -maxWidth) /2;
        imgObj.attr('src', src).attr('style', '').css({
          'height': maxHeight+'px',
          'left': '-' + left + 'px',
          'position': 'relative'
        });
      } else {
        var realH = (height / width) * maxWidth;
        var top = (realH-maxHeight) /2;
        imgObj.attr('src', src).attr('style', '').css({
          'width': maxWidth+'px',
          'top': '-' + top + 'px',
          'position': 'absolute'
        });
      }
    });
  });
}

/**
 * js 不被拦open
 */
function newWindowOpen(link)
{
  window.open(link, '_blank');
}

/**
 * 判断是否为微信内置浏览器
 */
function is_weixin(){
  var ua = navigator.userAgent.toLowerCase();
  if(ua.match(/MicroMessenger/i)=="micromessenger" || ua.match(/IEMobile/i)=="iemobile") {
      return true;
  } else {
      return false;
  }
}

// 在苹果终端上
function isOnIos()
{
  // platform
  var p = navigator.platform;
  if (p && p.match(/(Win|Mac)/i)) {
    return false;
  }

  var userAgent = window.navigator.userAgent;
  if (userAgent.match(/(iPhone|iPod|ios|iPad)/i)) {
    return true;
  }

  return false;
  //return  !!userAgent.match(/AppleWebKit.*Mobile.*/i)|| !!userAgent.match(/AppleWebKit/i);
}

/**
 * 判断是否是safari 
 */
function is_safari()
{
  var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  if (userAgent.indexOf("Safari") > -1) {
    return true;
  } //判断是否Safari浏览器

  return false;
}


/* 手机用户通用弹窗 */

function mobileShowMsg(msg, status, timeOut) {
  showMsg(msg, status, timeOut);
}

/**
 * 获取字符串长度
 */
function getStringLen(str){
  var i,len,code;
  if (str==null || str == "") {
    return 0;
  }
  len = str.length;
  for (i = 0; i < str.length; i++) {
    code = str.charCodeAt(i);
    if (code > 255) {
      len = len + 2;
    }
  }
  return len;
}

/**
 * 验证用户名是否为数字
 */
function is_number(userName) {
  if(userName.match(/^\d*$/)){
    return true;
  }
  return false;
}

/**
 * 验证密码是否存在空字符
 */
function is_pwd_null(pwd) {
  if(pwd.match(/\s/)) {
    return true;
  }
  return false;
}


/**
 * 验证字符串
 */
function checkStr(str, type)
{
  var str = $.trim(str);
  if (type == 'name') {
    // 用户名只能包括中文，英文，下划线(_)，连接线(-)
    if (str.match(/([\u4E00-\u9FBF]|[\u0041-\u005A]|[\u0061-\u007A]|\u005F|\u002D|\d)/g)) {
      return true;
    }
    
    return false;
  } else if (type == 'mail') {
    // Email验证
    //if (str.match(/^([a-zA-Z0-9]+[\_|\.|\-]?)*[a-zA-Z0-9]*@([a-zA-Z0-9]+\.)([a-zA-Z])+(|\.[a-zA-Z]+)$/g )) {
    if (str.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,}$/)) {
      return true;
    }
    
    return false;
    
  } else if (type == 'link') {
    //var _reg = /^http:\/\/\w+[\.]+[\.\w\/]*\w+$/;
    /*var _reg = /^http[s]?:\/\/.+$/;
    if (_reg.test(str)) {
      return true;
    }*/
    
    if (str) {
      return true;
    }
    return false;
  } else if (type == 'mobile') {
    var _reg = /^[0-9\-]+$/;
    if (_reg.test(str) && str.length >= 3 && str.length <= 30) {
      return true;
    }
    
    return false;
  }
}


/**
 * 过滤按钮重复点击
 * @param  {string} type 默认为按钮赋值 如：不传值或传 start 就是给当前按钮 添加 禁止重复点击事件  传reset 重置点击事件
 * @return {bool}   真/假
 */
function btnClick(type)
{
  if (!type || type == 'start') {
    if ($('body').data('btnClicked') == 1) {
      return false;
    }
    $('body').data('btnClicked', 1);
  }
  if (type == 'reset') {
    $('body').data('btnClicked', 0);
  }

  return true;
}

// 初始化
$(function(){
  // 公用链接跳转
  $('.js_openLink').on('click', function(e){
    // alert(1);
    e.stopPropagation();
    e.preventDefault();

    var href = $(this).attr('data-href');
    var target = $(this).data('target');
    var isLogin = $(this).data('login');
    
    if (!href || href == '' || typeof href == 'undefind') {
      return false;
    }
    if (target == '_blank') {
      newWindowOpen(href);
      return;
    }
    if (isLogin == 1) {
      checkLogin(href, function(){
        window.location.href = href;
      });
    } else {
      window.location.href = href;
    }

    return false;
  });

  // 添加新商品到购物车
  $('body').on('click', '.js_addNewGoodsToCart', function(){
    var skuId = $(this).data('sku_id'); // skuId 可以是 1,2,3,
    var goodsNum = $(this).data('goods_num');
    /*
    new ActLo({
      P_x_0 : $(this).offset().left,
      P_y_0 : $(this).offset().top,
      P_x_1 : $('.operation .buy-car').offset().left,
      P_y_1 : $('.operation .buy-car').offset().top,
    });
    */
    if (!skuId) {
      return;
    }
    addGoodsToCart(skuId, 1, function(json){
      if (json.info == 'ok') {
        location.href = location.href;
      }
    }, 0);
  });
});